//Libreria di tutte le funzioni ajax richiamate dalle pagine del sistema

//recupera l'oggetto HmlHttp
function getXmlHttpReq(){
    var xmlHttp;
    if(window.ActiveXObject){
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest){
        xmlHttp=new XMLHttpRequest();
    }
    return xmlHttp;
}


//controllo se l'indirizzo che l'utente ha digitato è riconsociuto da Google
function indirizzoRiconosciuto(indirizzo, where){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=indirizzoRiconosciuto&indirizzo="+indirizzo, "true");
    xmlHttp.send();
    xmlHttp.onreadystatechange=function(){indirizzoRiconosciutoCallback(xmlHttp, where)}
}

function indirizzoRiconosciutoCallback(xmlHttp, where){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            where.innerHTML = xmlHttp.responseText;
        }
        else{
            alert("indirizzoRiconosciutoCallback Error loading page"+ xmlHttp.status +":"+ xmlHttp.statusText);
        }
    }
}


//controllo se esiste già un annuncio aperto per l'url in input
function annuncioEsistente(url, where){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=annuncioEsistente&url="+url, "true");
    xmlHttp.send();
    xmlHttp.onreadystatechange=function(){annuncioEsistenteCallback(xmlHttp, url, where)}
}
 
function annuncioEsistenteCallback(xmlHttp, url, where){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            var numeroAnnunci =  parseInt(xmlHttp.responseXML.getElementsByTagName("numeroAnnunci")[0].childNodes[0].nodeValue);
            if (numeroAnnunci>0){
                if (numeroAnnunci == 1)
                    where.innerHTML = "C'&egrave; gi&agrave; "+numeroAnnunci+" annuncio aperto per il sito <em>"+url+"</em>.<br/> <a target='_blank' href='Controller?action=mostraAnnuncioEsistente&url="+url+"'>Clicca qui</a> per vederlo." 
                else
                    where.innerHTML = "Ci sono gi&agrave; "+numeroAnnunci+" annunci aperti per il sito <em>"+url+"</em>.<br/> <a target='_blank' href='Controller?action=mostraAnnuncioEsistente&url="+url+"'>Clicca qui</a> per vederli." 
            }
        }
        else{
            alert("annuncioEsistenteCallback Error loading page "+ xmlHttp.status +": "+ xmlHttp.statusText+", "+xmlHttp.getAllResponseHeaders());
        }
    }
}

 
//Controllo se esiste già un utente identificato dalla mail in input
function utenteEsistente(mail, where){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=utenteEsistente&mail="+mail, "true");
    xmlHttp.send();
    xmlHttp.onreadystatechange=function(){utenteEsistenteCallback(xmlHttp, mail, where)}
    return true;
}

function utenteEsistenteCallback(xmlHttp, mail, where){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            var isEsistente =  xmlHttp.responseXML.getElementsByTagName("isRegistrato")[0].childNodes[0].nodeValue;
            if (isEsistente=="true"){
                where.innerHTML = "C'&egrave; gi&agrave; un utente registrato con l'indirizzo <em>"+mail+"</em>." 
            }
        }
        else{
            alert("utenteEsistenteCallback Error loading page" + xmlHttp.status +": "+ xmlHttp.statusText+", "+xmlHttp.getAllResponseHeaders());
        }
    }
}


//Controllo se la mail in inpu corrisponde a un utente registrato.
//La differenza con il metodo utenteEsistente è nella callback
function utenteRegistrato(mail, where){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=utenteEsistente&mail="+mail, "true");
    xmlHttp.send();
    xmlHttp.onreadystatechange=function(){utenteRegistratoCallback(xmlHttp, mail, where)}
    return true;
}

function utenteRegistratoCallback(xmlHttp, mail, where){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            var isEsistente =  xmlHttp.responseXML.getElementsByTagName("isRegistrato")[0].childNodes[0].nodeValue;
            if (isEsistente=="false"){
                where.innerHTML = "Non c'&egrave; nessun utente registrato con l'indirizzo <em>"+mail+"</em>." 
            }
        }
        else{
            alert("utenteEsistenteCallback Error loading page" + xmlHttp.status +": "+ xmlHttp.statusText+", "+xmlHttp.getAllResponseHeaders());
        }
    }
}


//mostra il popup per il login
function mostraLoginPopup(){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraLoginPopup", "true");
    xmlHttp.onreadystatechange=function(){mostraLoginCallback(xmlHttp)};
    xmlHttp.send();
}
    
function mostraLoginCallback(xmlHttp){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createSmokeyPopup(xmlHttp.responseText);
        }
        else{
            window.alert("mostraLoginCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//esegue il login
function ajaxLogin(mail, pwd){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=loginSito&mail="+mail+"&password="+pwd, "true");
    xmlHttp.onreadystatechange=function(){ajaxLoginCallback(xmlHttp)};
    xmlHttp.send();
}

function ajaxLoginCallback(xmlHttp){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            //loginOk contiene linkFb o noLinkFb se il login va bene, un messaggio di errore altrimenti
            var loginOk =  xmlHttp.responseXML.getElementsByTagName("loginOk")[0].childNodes[0].nodeValue;
            if (loginOk=="linkFb"){
                window.location = "http://localhost:8080/ShippingShareBisBis-war/Controller?action=linkFb&redirect=http://localhost:8080/ShippingShareBisBis-war/index.jsp"
            }
            else if (loginOk == "noLinkFb"){
                window.location = "http://localhost:8080/ShippingShareBisBis-war/index.jsp";
            }
            else{
                //mostro l'errore
                document.getElementById("mostraErroreLogin").innerHTML = loginOk;
            }
        }
        else{
            window.alert("ajaxLoginCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//esegue il logout
function ajaxLogout(){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=logout", "true");
    var loc = window.location;
    xmlHttp.onreadystatechange=function(){ajaxLogoutCallback(xmlHttp, loc)};
    xmlHttp.send();
}

function ajaxLogoutCallback(xmlHttp, loc){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            //torno sempre a index
            window.location.href = "/ShippingShareBisBis-war/index.jsp";
        }
        else{
            //mostro l'errore
            window.alert("ajaxLogoutCallback ops... errore ajax" +xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup per la registrazione
function mostraRegistrazionePopup(){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraRegistrazionePopup", "true");
    xmlHttp.onreadystatechange=function(){mostraRegistrazioneCallback(xmlHttp)};
    xmlHttp.send();
}
    
function mostraRegistrazioneCallback(xmlHttp){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createSmokeyPopup(xmlHttp.responseText);
        }
        else{
            window.alert("mostraRegistrazioneCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup per la ricerca rapida
function mostraRicercaPopup(event){
    var xmlHttp = getXmlHttpReq(); 
    xmlHttp.open("GET", "Controller?action=mostraRicercaPopup", "true");
    xmlHttp.onreadystatechange=function(){mostraRicercaCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraRicercaCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createBaloonPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraRicercaCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup che permette al creatore di un annuncio di modificare la propria spesa iniziale
function mostraModificaSpesaCreatorePopup(event, idAnnuncio){
    var xmlHttp = getXmlHttpReq(); 
    xmlHttp.open("GET", "Controller?action=mostraModificaSpesaCreatorePopup&idAnnuncio="+idAnnuncio, "true");
    xmlHttp.onreadystatechange=function(){mostraRicercaCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraModificaSpesaCreatoreCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createBaloonPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraModificaSpesaCreatoreCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup che permette al moderatore se gestire annunci o utenti
function mostraGestionePopup(event){
    var xmlHttp = getXmlHttpReq(); 
    xmlHttp.open("GET", "Controller?action=mostraGestionePopup", "true");
    xmlHttp.onreadystatechange=function(){mostraGestioneCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraGestioneCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createBaloonPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraGestionePopup ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup che permette a un utente di modificare alcune informazioni del proprio profilo
function mostraModificaInfoProfiloPopup(event){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraModificaInfoProfiloPopup", "true");
    xmlHttp.onreadystatechange=function(){mostraModificaInfoProfiloCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraModificaInfoProfiloCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createBaloonPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraRicercaCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup che permette ad un utente di lasciare un feedback
function mostraFeedbackPopup(event, idAdesione, perChi){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraFeedbackPopup&idAdesione="+idAdesione+"&perChi="+perChi, "true");
    xmlHttp.onreadystatechange=function(){mostraFeedbackCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraFeedbackCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createBaloonPopup(xmlHttp.responseText, event);
            $('input[type="radio"].star').rating(); // Hook the events.
        }
        else{
            window.alert("mostraFeedbackCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup con le indicazioni per raggiungere un determinato luogo e la mappa
function mostraMappaPopup(event, from, to){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraMappaPopup&from="+from+"&to="+to, "true");
    xmlHttp.onreadystatechange=function(){mostraMappaCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraMappaCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createSmokeyPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraFeedbackCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra il popup per scegliere l'e-mail a cui inviare il link per la modifica della password
function mostraDimenticataPasswordPopup(event){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraDimenticataPasswordPopup", "true");
    xmlHttp.onreadystatechange=function(){mostraDimenticataPasswordCallback(xmlHttp, event)};
    xmlHttp.send();
}
    
function mostraDimenticataPasswordCallback(xmlHttp, event){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            createSmokeyPopup(xmlHttp.responseText, event);
        }
        else{
            window.alert("mostraFeedbackCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//mostra gli annunci in scadenza
function mostraAnnunciInScadenza(){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "Controller?action=mostraAnnunciInScadenza", "true");
    xmlHttp.onreadystatechange=function(){mostraAnnunciInScadenzaCallback(xmlHttp)};
    xmlHttp.send();
}

function mostraAnnunciInScadenzaCallback(xmlHttp){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            listaAnnunciRegione = document.getElementById("listaAnnunciRegione");
            listaAnnunciRegione.innerHTML = xmlHttp.responseText;
            $('input[type="radio"].star').rating(); // Hook the events.
        }
        else{
            window.alert("mostraAnnunciInScadenzaCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    } 
}
  

//mostra gli annunci aperti relativi a una determinata regione
function mostraAnnunciRegione(regione){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "../Controller?action=mostraAnnunciRegione&regione="+regione, "true");
    xmlHttp.onreadystatechange=function(){mostraAnnunciRegioneCallback(xmlHttp)};
    xmlHttp.send();
}   
    
function mostraAnnunciRegioneCallback(xmlHttp){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            listaAnnunciRegione = window.top.document.getElementById("listaAnnunciRegione");
            listaAnnunciRegione.innerHTML = xmlHttp.responseText;
            $('input[type="radio"].star').rating(); // Hook the events.
//            var inputs = window.top.document.getElementsByTagName("input");
//            for (var i=0; i<inputs.length; i++){
//                if (inputs[i].className == "star") inputs[i].rating();
//            }
        }
        else{
            window.alert("mostraAnnunciRegioneCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}


//controlla se l'utente loggato è già iscritto a un annuncio ancora aperto per lo stesso sito. Se sì, mostra un popup
function checkIscrittoSito(event, sito, idAnnuncio){
    var xmlHttp = getXmlHttpReq();
    xmlHttp.open("GET", "http://localhost:8080/ShippingShareBisBis-war/Controller?action=checkIscrittoSito&url="+sito+"&idAnnuncio="+idAnnuncio, "true");
    xmlHttp.onreadystatechange=function(){checkIscrittoSitoCallback(xmlHttp, sito, idAnnuncio)};
    xmlHttp.send();
}   
    
function checkIscrittoSitoCallback(xmlHttp, sito, idAnnuncio){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            if (xmlHttp.responseText != ""){
                createSmokeyPopup(xmlHttp.responseText);
            }
            else{
                window.location="http://localhost:8080/ShippingShareBisBis-war/Controller?action=iscrivitiAnnuncio&annuncio="+idAnnuncio;
            }
        }
        else{
            window.alert("checkIscrittoSitoCallback ops... errore ajax: "+xmlHttp.status+" "+xmlHttp.statusText);
        }
    }
}